
package com.ditt.forum.jdbc;

import java.sql.*;

public class MessageForum extends Message
{
  private int id;

  public MessageForum (Utilisateur auteur, String sujet,
                       String texte)
  {
    super (auteur, sujet, texte);
  }

  public MessageForum ()
  {
    this (null, null, null);
  }

  public int getId ()
  {
    return this.id;
  }

  public void setId (int id)
  {
    this.id = id;
  }

  public boolean rechercher (ConnecteurForum connecteur)
                                        throws SQLException
  {
    PreparedStatement rechercheMessage =
      connecteur.getConnexion().prepareStatement(
           "SELECT * FROM MESSAGE WHERE ID=?");
    rechercheMessage.setInt (1, this.id);
    ResultSet resultat = rechercheMessage.executeQuery();
    boolean messageExiste = resultat.next();
    if (messageExiste)
    {
      setAuteur (resultat.getString("AUTEUR"));
      setDateCreation (resultat.getTimestamp("DATECREATION"));
      setSujet (resultat.getString("SUJET"));
      setTexte (resultat.getString("TEXTE"));
    }
    resultat.close();
    rechercheMessage.close();
    return messageExiste;
  }

  public void ajouter (ConnecteurForum connecteur)
                                        throws SQLException
  {
    PreparedStatement rechercheMaxIdMessage =
      connecteur.getConnexion().prepareStatement(
           "SELECT MAX(ID) FROM MESSAGE");
    ResultSet resultat = rechercheMaxIdMessage.executeQuery ();
    resultat.next ();
    this.id = resultat.getInt (1) + 1;
    resultat.close ();
    rechercheMaxIdMessage.close();
    PreparedStatement ajoutMessage =
      connecteur.getConnexion().prepareStatement(
          "INSERT INTO MESSAGE"
          + " (ID, AUTEUR, DATECREATION, SUJET, TEXTE) "
          + " VALUES (?, ?, ?, ?, ?)");
    ajoutMessage.setInt (1, this.id);
    ajoutMessage.setString (2, getAuteur());
    ajoutMessage.setTimestamp (3,
         new Timestamp (getDateCreation().getTime ()));
    ajoutMessage.setString (4, getSujet());
    ajoutMessage.setString (5, getTexte());
    ajoutMessage.executeUpdate ();
    ajoutMessage.close();
  }

  public void mettreAJour (ConnecteurForum connecteur)
                                        throws SQLException
  {
    PreparedStatement miseAJourMessage =
      connecteur.getConnexion().prepareStatement (
           "UPDATE MESSAGE SET AUTEUR=?, DATECREATION=?,"
           + " SUJET=?, TEXTE=? WHERE ID=?");
    miseAJourMessage.setString (1, getAuteur());
    miseAJourMessage.setTimestamp (2,
        new Timestamp (getDateCreation().getTime ()));
    miseAJourMessage.setString (3, getSujet());
    miseAJourMessage.setString (4, getTexte());
    miseAJourMessage.setInt (5, this.id);
    miseAJourMessage.executeUpdate ();
    miseAJourMessage.close ();
  }
}
